save
目的 Purpose
Saves a new domain class instance or updates a modified persistent instance in the database, cascading updates to child instances if required.使用例 Examples
def b = new Book(title: "The Shining") b.save()
詳細 Description
The save
method informs the persistence context that an instance should be saved or updated. The object will not be persisted immediately unless the flush
argument is used:b.save(flush: true)
save
method returns null
if validation failed and the instance was not persisted, or the instance itself if successful. This lets you use "Groovy truth" (null
is considered false
) to write code like the following:if (!b.save()) {
b.errors.each {
println it
}
}
Parameters:
validate
(optional) - Set tofalse
if validation should be skippedflush
(optional) - When set totrue
flushes the persistence context, persisting the object immediately and updating theversion
column for optimistic lockinginsert
(optional) - When set totrue
will force Hibernate to do a SQL INSERT; this is useful in certain situations (for example when using assigned ids) and Hibernate cannot detect whether to do an INSERT or an UPDATEfailOnError
(optional) - When set totrue
thesave
method with throw agrails.validation.ValidationException
if validation fails. This behavior may also be triggered by setting thegrails.gorm.failOnError
property ingrails-app/conf/Config.groovy
. If the Config property is set and the argument is passed to the method, the method argument will always take precedence. For more details about the config property and other GORM config options, see the GORM Configuration Options section of The User Guide.deepValidate
(optional) - Determines whether associations of the domain instance should also be validated, i.e. whether validation cascades. This istrue
by default - set tofalse
to disable cascading validation.
By default GORM classes are configured for optimistic locking, which is a feature of Hibernate that involves storing an incrementing version in the table. This value is only updated in the database when the Hibernate session is flushed.